Spring Security এবং WebClient এর Integration

Java Technologies - স্প্রিং বুট ক্লায়েন্ট (Spring Boot Client) WebClient এবং Security Integration |
112
112

Spring Security এবং WebClient-এর ইন্টিগ্রেশন ব্যবহার করে আপনি সুরক্ষিত HTTP রিকুয়েস্ট পরিচালনা করতে পারেন। এটি প্রায়ই OAuth2, JWT, Basic Authentication, বা API Key ব্যবহার করে নিরাপদ অ্যাপ্লিকেশন তৈরি করতে ব্যবহৃত হয়।


প্রয়োজনীয় ডিপেন্ডেন্সি

Maven ডিপেন্ডেন্সি

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-webflux</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.security</groupId>
    <artifactId>spring-security-oauth2-client</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.security</groupId>
    <artifactId>spring-security-oauth2-jose</artifactId>
</dependency>

Spring Security এবং WebClient সেটআপ

১. WebClient Bean তৈরি (Spring Security সহ)

WebClient-এ Spring Security কনফিগার করতে ServerOAuth2AuthorizedClientExchangeFilterFunction ব্যবহার করতে হবে।

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.oauth2.client.registration.ClientRegistrationRepository;
import org.springframework.security.oauth2.client.web.reactive.function.client.ServerOAuth2AuthorizedClientExchangeFilterFunction;
import org.springframework.web.reactive.function.client.WebClient;

@Configuration
public class WebClientConfig {

    @Bean
    public WebClient webClient(ClientRegistrationRepository clientRegistrationRepository,
                               org.springframework.security.oauth2.client.web.server.ServerOAuth2AuthorizedClientRepository authorizedClientRepository) {
        ServerOAuth2AuthorizedClientExchangeFilterFunction oauth2 =
                new ServerOAuth2AuthorizedClientExchangeFilterFunction(clientRegistrationRepository, authorizedClientRepository);
        oauth2.setDefaultOAuth2AuthorizedClient(true);

        return WebClient.builder()
                .filter(oauth2)
                .build();
    }
}

২. application.yml (OAuth2 Client Configuration)

OAuth2 ক্লায়েন্ট কনফিগারেশনের জন্য application.yml এ নিচের সেটিংস যোগ করুন:

spring:
  security:
    oauth2:
      client:
        registration:
          my-client:
            client-id: your-client-id
            client-secret: your-client-secret
            authorization-grant-type: client_credentials
            scope: read
        provider:
          my-provider:
            token-uri: https://example.com/oauth/token

৩. WebClient ব্যবহার করে API কল

WebClient Bean ব্যবহার করে সুরক্ষিত API কল করতে পারেন।

GET Request:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import reactor.core.publisher.Mono;

@RestController
public class ApiController {

    @Autowired
    private WebClient webClient;

    @GetMapping("/secure-api")
    public Mono<String> callSecureApi() {
        return webClient.get()
                .uri("https://api.example.com/secure-data")
                .retrieve()
                .bodyToMono(String.class);
    }
}

POST Request with Bearer Token:

@GetMapping("/post-secure")
public Mono<String> postSecure() {
    return webClient.post()
            .uri("https://api.example.com/secure-endpoint")
            .bodyValue(new MyRequest("data"))
            .retrieve()
            .bodyToMono(String.class);
}

static class MyRequest {
    private String value;

    public MyRequest(String value) {
        this.value = value;
    }

    // Getters and setters
}

৪. Basic Authentication সহ WebClient

WebClient Bean কনফিগারেশন:

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.reactive.function.client.WebClient;

@Configuration
public class WebClientBasicAuthConfig {

    @Bean
    public WebClient webClientWithBasicAuth() {
        return WebClient.builder()
                .defaultHeaders(headers -> headers.setBasicAuth("username", "password"))
                .build();
    }
}

API কল:

@GetMapping("/basic-auth-api")
public Mono<String> basicAuthApi() {
    return webClientWithBasicAuth.get()
            .uri("https://api.example.com/basic-auth")
            .retrieve()
            .bodyToMono(String.class);
}

৫. JWT Token সহ WebClient

JWT Token ব্যবহারের জন্য Custom Header যোগ করুন:

@Bean
public WebClient webClientWithJwt() {
    return WebClient.builder()
            .defaultHeaders(headers -> headers.setBearerAuth("your-jwt-token"))
            .build();
}

API কল:

@GetMapping("/jwt-auth-api")
public Mono<String> jwtAuthApi() {
    return webClientWithJwt.get()
            .uri("https://api.example.com/jwt-secure")
            .retrieve()
            .bodyToMono(String.class);
}

Spring Security এর সুবিধা WebClient-এ

  1. OAuth2 Integration: Spring Security সরাসরি OAuth2 ক্লায়েন্ট সাপোর্ট দেয়।
  2. Bearer Token Management: টোকেন স্বয়ংক্রিয়ভাবে যোগ ও রিফ্রেশ হয়।
  3. Custom Authentication: Basic Auth বা Custom JWT ব্যবহার সহজ।

উপসংহার

Spring Security এবং WebClient এর ইন্টিগ্রেশন আপনাকে সুরক্ষিত HTTP কল সহজে পরিচালনা করতে সাহায্য করে। আপনি OAuth2, Basic Auth বা JWT Token ব্যবহার করে বিভিন্ন ধরণের নিরাপত্তা সমর্থিত API কল করতে পারবেন।

Content added By
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion